package com.boot.system.service;

import com.boot.common.result.Result;
import com.boot.system.entity.SysMenu;
import com.mybatisflex.core.service.IService;

import java.util.List;
import java.util.Map;

public interface MenuService extends IService<SysMenu> {

    /**
     * 获取菜单树
     * @return 树
     */
    List<SysMenu> getMenuTree();

    /**
     * 菜单列表
     * @param queryParam 查询条件
     * @return 列表
     */
    List<SysMenu> getMenuList(Map<String, Object> queryParam);

    /**
     * 新增菜单
     * @param dataParam 菜单表单
     * @return 状态
     */
    Result<?> addMenu(Map<String, Object> dataParam);

    /**
     * 修改菜单
     * @param dataParam 菜单表单
     * @return 状态
     */
    Result<?> updateMenu(Map<String, Object> dataParam);

    /**
     * 删除菜单
     * @param id 菜单ID
     * @return 状态
     */
    boolean deleteMenu(Long id);

    /**
     * 递归查询
     * @param pid 父ID
     * @param type 类型 1=向上查询 2=向下查询
     * @param list 查询列表
     */
    void recursiveQuery(Long pid, int type, List<Long> list);

    /**
     * 设置角色
     * @param dataParam 表单
     * @return 状态
     */
    boolean setRole(Map<String, Object> dataParam);

    /**
     * 获取列表（缓存）
     * @return 列表
     */
    List<SysMenu> getCacheList();

    /**
     * 获取（缓存）
     * @param id 菜单ID
     * @return 值
     */
    SysMenu getCache(Long id);

    /**
     * 设置（缓存）
     * @param id 菜单ID
     */
    void setCache(Long id);

    /**
     * 删除（缓存）
     * @param ids ID集合
     */
    void deleteCache(List<Long> ids);
}
